export function color_generator(value) {
  // 使用哈希函数将 value 转换为整数种子
  var seed = hash(value.toString());

  // 创建伪随机数生成器
  var random = xorshift(seed);

  // 生成随机的 R、G、B 值
  var R = getRandomInt(1, 240, random);
  var G = getRandomInt(1, 220, random);
  var B = getRandomInt(1, 240, random);

  // 检查生成的颜色是否接近或为黑色和白色
  while (isColorCloseToBlackOrWhite(R, G, B)) {
    R = getRandomInt(1, 240, random);
    G = getRandomInt(1, 220, random);
    B = getRandomInt(1, 240, random);
  }

  return { R: R, G: G, B: B };
}

// 生成指定范围内的随机整数
function getRandomInt(min, max, random) {
  return Math.floor(random() * (max - min + 1)) + min;
}

// 检查颜色是否接近或为黑色和白色
function isColorCloseToBlackOrWhite(R, G, B) {
  var threshold = 30; // 颜色差异的阈值

  // 检查 R、G、B 是否等于 1 或 255
  if (R === 1 || R > 240 || G === 1 || G > 220 || B === 1 || B > 240) {
    return true;
  }

  // 检查 R、G、B 之间的差异是否小于阈值
  if (Math.abs(R - G) < threshold || Math.abs(G - B) < threshold || Math.abs(B - R) < threshold) {
    return true;
  }

  return false;
}

// 简单的哈希函数示例
function hash(str) {
  var hash = 0;
  if (str.length === 0) {
    return hash;
  }
  for (var i = 0; i < str.length; i++) {
    var char = str.charCodeAt(i);
    hash = (hash << 5) - hash + char;
    hash = hash & hash;
  }
  return Math.abs(hash);
}

// xorshift 算法伪随机数生成器
function xorshift(seed) {
  var x = seed;
  return function() {
    x ^= x << 13;
    x ^= x >> 17;
    x ^= x << 5;
    return (x >>> 0) / ((1 << 31) >>> 0);
  };
}
